// 1）二次封装axios请求
import axios from 'axios'
import qs from 'qs'
import { Toast } from 'vant' // 用来给响应拦截的时候，没有token做轻提示
import Vue from '_vue@2.6.12@vue'
import router from '../router'
// 2）创建axios实例
const request = axios.create({
  baseURL: '/wp0706',
  timeout: 8000
})
const vm = new Vue()

// 添加请求拦截器
request.interceptors.request.use(function (config) {
  vm.$showLoading()
  if (config.method === 'post' && config.data) {
    config.data = qs.stringify(config.data)
  }
  // 判断token
  const token = localStorage.getItem('token')
  // 判断有没有token，不需要登录的就可以正常访问
  if (token) {
    config.headers.token = token // 将token放在请求头中发送给服务器
  }
  return config
}, function (error) {
  vm.$hideLoading()
  return Promise.reject(error)
})

request.interceptors.response.use(function (response) {
  // 判断token有没有传或者有没有过期 （为什么放在这里，是不知道到底用户从哪个页面过来的）
  if (response.data.code === 401 || response.data.code === 403) {
    Toast('没有token或者token过期了')
    router.push('/login')
  }
  vm.$hideLoading()
  return response
}, function (error) {
  vm.$hideLoading()
  return Promise.reject(error)
})

// 3）模块导出
export default request
